
package org.redisson.client.protocol.convertor;

import org.redisson.api.StreamMessageId;


/**
 * 实现了将一般对象转换为StreamMessageId的转换器。
 * 该转换器主要用于处理和转换消息ID，确保消息ID的正确性和一致性。
 */
public class StreamIdConvertor implements Convertor<StreamMessageId> {

    /**
     * 单例实例，提供全局唯一的转换器实例。
     * 使用静态实例可以避免多次创建转换器对象，提高效率。
     */
    public static final StreamIdConvertor INSTANCE = new StreamIdConvertor();

    /**
     * 将给定的对象转换为StreamMessageId。
     * 该方法假设输入的对象是一个字符串，该字符串由两个长整型数字以"-"分隔。
     *
     * @param id 需要转换的对象。预期是一个字符串，格式为"part1-part2"，其中part1和part2是长整型数字。
     * @return 返回一个新的StreamMessageId对象，该对象的组成部分来自转换后的字符串部分。
     */
    @Override
    public StreamMessageId convert(Object id) {
        // 将id字符串按照"-"分割成两部分
        String[] parts = id.toString().split("-");
        // 使用分割出的两部分构造一个新的StreamMessageId对象
        return new StreamMessageId(Long.valueOf(parts[0]), Long.valueOf(parts[1]));
    }

}
